//
//  LYAppDelegateManager.h
//  LYAppDelegateManagerService
//
//  Created by cqck on 2021/12/27.
//

#import <UIKit/UIKit.h>

typedef NS_ENUM(NSUInteger, LYAppDelegateServiceLevel) {
    ///顶级服务
    LYAppDelegateServiceLevelTop,
    ///普通服务
    LYAppDelegateServiceLevelNormal,
};

@protocol LYAppDelegateServiceProtocol <NSObject, UIApplicationDelegate>

@optional
/**
 @brief 启动次级模块加载项
 */
- (void)launch;

@required
/**
 @brief 配置模块启动等级

 @return LYAppDelegateServiceLevel
 */
- (LYAppDelegateServiceLevel)level;

@end

@interface LYAppDelegateManager : NSObject

/**
 @brief LYAppDelegateManager单例

 @return instancetype LYAppDelegateManager实例
 */
+ (instancetype)manager;

/**
 @brief 通过Plist格式配置文件路径注册服务

 @param path 配置文件路径
 */
- (void)registerServiceWithFilePath:(NSString *)path;

/**
 @brief 启动服务配置

 @param selector 执行的方法
 @param args 可变参数
 */
- (void)launchWithSelector:(SEL)selector args:(id)args, ... NS_REQUIRES_NIL_TERMINATION;

/**
 @brief 启动服务配置

 @param selector 执行的方法
 @param args 可变参数
 @return BOOL 返回
 */
- (BOOL)launchBoolReturnWithSelector:(SEL)selector args:(id)args, ... NS_REQUIRES_NIL_TERMINATION;

@end
